import http from '@ohos.net.http';
import image from '@ohos.multimedia.image';
import promptAction from '@ohos.promptAction';
import Ability from '@ohos.app.ability.UIAbility';

const API_BASE_URL = 'https://api.learning.com'; // 替换为实际学习通API基础URL
const AVATAR_API = '/user/avatar'; // 替换为实际获取头像的API路径

export default class SuperstarAvatarAbility extends Ability {
  private avatarImage: image.PixelMap | null = null;

  async onWindowStageCreate(windowStage: any) {
    // 初始化UI
    windowStage.loadContent('pages/index', (err, data) => {
      if (err) {
        console.error('Failed to load the content. Cause:', err);
        return;
      }
      console.info('Succeeded in loading the content. Data:', data);
    });

    // 获取并显示头像
    await this.fetchAndDisplayAvatar();
  }

  // 获取学习通头像
  private async fetchAndDisplayAvatar(): Promise<void> {
    try {
      // 1. 获取用户token (这里需要根据实际应用逻辑获取)
      const token = await this.getUserToken();
      if (!token) {
        promptAction.showToast({ message: '请先登录学习通', duration: 2000 });
        return;
      }

      // 2. 创建HTTP请求
      const httpRequest = http.createHttp();
      const request: http.HttpRequestOptions = {
        method: 'GET',
        header: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${token}`
        },
        extraData: '',
        expectDataType: http.HttpDataType.IMAGE
      };

      // 3. 发送请求获取头像
      const response = await httpRequest.request(API_BASE_URL + AVATAR_API, request);
      if (response.responseCode !== 200) {
        throw new Error(`HTTP error! status: ${response.responseCode}`);
      }

      // 4. 处理图像数据
      const imageSource = image.createImageSource(response.result);
      this.avatarImage = await imageSource.createPixelMap();

      // 5. 显示头像 (这里需要根据实际UI组件更新)
      this.updateAvatarUI(this.avatarImage);

      promptAction.showToast({ message: '头像加载成功', duration: 2000 });
    } catch (error) {
      console.error('获取头像失败:', error);
      promptAction.showToast({ message: '获取头像失败，请重试', duration: 2000 });
    }
  }

  // 更新UI显示头像 (示例方法，需根据实际UI组件调整)
  private updateAvatarUI(pixelMap: image.PixelMap): void {
    // 这里应该是更新UI组件的逻辑
    // 例如: this.avatarComponent.pixelMap = pixelMap;
    console.log('头像数据已更新，需要在此处实现UI更新逻辑');
  }

  // 获取用户token (示例方法，需根据实际应用逻辑实现)
  private async getUserToken(): Promise<string | null> {
    // 这里应该是获取用户认证token的逻辑
    // 可能是从本地存储或登录流程中获取
    return 'example_token'; // 返回示例token，实际应用中需要替换
  }

  // 点击按钮触发头像加载
  onButtonClick(): void {
    this.fetchAndDisplayAvatar();
  }
}